/**
 * 报表设计公司(2011)
 */
package com.reportgear.designer.action;

import java.util.EventObject;

import net.abbp.report.model.Cell;

import com.reportgear.core.swing.pane.base.JBaseDialog;

/**
 * @version 1.0 2011-3-24
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since ANNCSR 2.0
 */
public abstract class AbstractCellAction extends UndoableAction {

	@Override
	public boolean executeAction(EventObject evt) {
		// JWorksheet jSheet = getWorkSheet();
		// if (jSheet == null) {
		// return false;
		// }
		// GridSelection gridSel = jSheet.getGridSelection();
		// GridSelection.Type type = gridSel.getType();
		// if (type == GridSelection.Type.Cell) {
		// return false;
		// }
		//
		// Rectangle rEdit = gridSel.getEditRectangle();
		// CellReport report = jSheet.getReport();
		// Cell cell = report.getCell(rEdit.x, rEdit.y);
		//
		// // 计算父格
		// // if (report != null) {
		// // if (report instanceof WorkSheet) {
		// // SheetUtils.calculateDefaultParent((WorkSheet) report);
		// // } else if ((report instanceof WorkBook) && (((WorkBook)
		// // report).getSelectedReport() instanceof WorkSheet)) {
		// // SheetUtils.calculateDefaultParent((WorkSheet) ((WorkBook)
		// // report).getSelectedReport());
		// // }
		// // }
		// int ret = editCellDialog(cell);
		// if (ret == JBaseDialog.RESULT_OK) {
		// for (int k = 0; k < gridSel.getCellRectangleCount(); ++k) {
		// Rectangle rSel = gridSel.getCellRectangle(k);
		// for (int r = 0; r < rSel.height; ++r) {
		// for (int c = 0; c < rSel.width; ++c) {
		// int column = c + rSel.x;
		// int row = r + rSel.y;
		// cell = report.getCell(column, row);
		// updateCell(dialog, cell);
		// if (!(isNeedShinkToFit())) {
		// continue;
		// }
		//
		// // Object localObject = cell.getValue();
		// // if ((localObject == null) || ((!(localObject
		// // instanceof String)) && (!(localObject instanceof
		// // Number)))) {
		// // continue;
		// // }
		// // DynamicValueList localDynamicValueList =
		// // ReportHelper.getColumnWidthList(report);
		// // int i4 = cell.getColumn();
		// // int i5 = cell.getRow();
		// // int i6 =
		// // PaintUtils.analyzeCellElementPreferredHeight(cell,
		// // localDynamicValueList.getRangeValue(i4, i4 +
		// // cell.getColumnSpan()));
		// // if ((i6 <= report.getRowHeight(i5)) || (!(report
		// // instanceof AbstractReport))) {
		// // continue;
		// // }
		// // report.setRowHeight(i3, i6);
		// }
		// }
		// }
		// return true;
		// }
		return false;
	}

	/**
	 * 编辑单元格格对话框，返回对话框执行结果
	 * 
	 * @param cell
	 *            单元格
	 * @return 执行结果
	 */
	protected abstract int editCellDialog(Cell cell);

	/**
	 * 更新单元格
	 * 
	 * @param dialog
	 *            对话框
	 * @param cell
	 *            单元格
	 */
	protected abstract void updateCell(JBaseDialog dialog, Cell cell);

	/**
	 * 是否适合到单元格
	 * 
	 * @return 适合单元格
	 */
	protected boolean isNeedShinkToFit() {
		return false;
	}

}
